﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Basica;
using VemTransporte.Models.Fachada;

namespace VemTransporte.Views.UsuarioEmpresa
{
    public partial class MenuEmpresaLinhaParada : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Empresa empresa = (Empresa)Session["EmpresaLogada"];

                if (empresa != null)
                {
                    ImageEmpresaLogoTipo.ImageUrl = string.Format("/EmpresaLogos/{0}.jpg", empresa.Id);
                    if (empresa.TipoAcesso.Equals("ADMEMPRESA"))
                    {
                        liMenuEmpresaCadastro.Visible = true;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = true;
                        liMenuCadastrarTelefones.Visible = true;
                        liMenuAlterarSenhaEmpresa.Visible = true;
                        liMenuAlterarLinhaEmpresa.Visible = false;
                        liMenuCadastroParadaEmpresa.Visible = false;
                        liMenuHoraLinhaEmpresa.Visible = false;
                        liMenuEmpresaVeiculo.Visible = true;
                    }
                    else if (empresa.TipoAcesso.Equals("ADMTRANSPORTEPUBLICO"))
                    {
                        liMenuEmpresaCadastro.Visible = false;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = false;
                        liMenuCadastrarTelefones.Visible = false;
                        liMenuAlterarSenhaEmpresa.Visible = false;
                        liMenuAlterarLinhaEmpresa.Visible = true;
                        liMenuCadastroParadaEmpresa.Visible = true;
                        liMenuHoraLinhaEmpresa.Visible = true;
                        liMenuEmpresaVeiculo.Visible = false;
                    }
                    else
                    {

                    }

                    if (empresa.NomeFantasia.IndexOf(" ") > 0)
                    {
                        LabelNomeEmpresa.Text = empresa.NomeFantasia.Substring(0, empresa.NomeFantasia.IndexOf(" "));
                    }
                    else
                    {
                        LabelNomeEmpresa.Text = empresa.NomeFantasia;
                    }
                }
                else
                {
                    Response.Redirect("LoginEmpresa.aspx", false);
                }
            }
        }

        protected void ButtonProcurarLinha_Click(object sender, EventArgs e)
        {
            Empresa empresa = (Empresa)Session["EmpresaLogada"];

            if (empresa != null)
            {
                try
                {
                    ErrorMessage.Text = "";
                    Linha l = Fachada.Instance.ProcurarLinhaPorNumero(TextBoxNumeroLinha.Text);

                    if (l != null)
                    {
                        Fachada.Instance.LinhaAtual = l;

                        LabelNomeLinha.Text = l.Nome;

                        if (l.LinhaParadas.Count == 0)
                        {
                            IList<Parada> paradas = null;
                            GridViewParada.DataSource = paradas;
                            GridViewParada.DataBind();
                        }
                        else
                        {
                            IList<Parada> paradas = new List<Parada>();

                            foreach (LinhaParada linhaParada in l.LinhaParadas.ToList())
                            {
                                paradas.Add(linhaParada.Parada);
                            }

                            GridViewParada.DataSource = paradas;
                            GridViewParada.DataBind();
                        }
                    }
                    else
                    {
                        Response.Write("<script>window.alert('Linha Não Encontrada!');</script>");
                        TextBoxNumeroLinha.Focus();
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx", false);
            }
        }

        protected void ButtonCadastrarParada_Click(object sender, EventArgs e)
        {
            Empresa empresa = (Empresa)Session["EmpresaLogada"];

            if (empresa != null)
            {
                Linha l = Fachada.Instance.LinhaAtual;
                if (l != null)
                {
                    Parada p = Fachada.Instance.ProcurarParadaPorNumero(TextBoxNumero.Text);

                    if (p != null)
                    {
                        LinhaParada linhaParada = new LinhaParada();
                        linhaParada.Linha = l;
                        p.AddParadaLinhas(linhaParada);
                        Fachada.Instance.Salvar(p);

                        Linha linhaAtual = Fachada.Instance.ProcurarLinhaPorId(l.Id);

                        Fachada.Instance.LinhaAtual = linhaAtual;

                        IList<Parada> paradas = new List<Parada>();

                        foreach (LinhaParada lParada in linhaAtual.LinhaParadas.ToList())
                        {
                            paradas.Add(lParada.Parada);
                        }

                        GridViewParada.DataSource = paradas;
                        GridViewParada.DataBind();
                    }
                    else
                    {
                        TextBoxNumero.Focus();
                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(Page), "MSG", "javascript:alert('Parada não encontrada!');", true);

                    }


                }
                else
                {
                    ScriptManager.RegisterStartupScript(UpdatePanel2, typeof(Page), "MSG", "javascript:alert('Linha não foi informada! Informe-a.');", true);
                    TextBoxNumeroLinha.Focus();
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx", false);
            }
        }

        protected void GridViewParada_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                this.GridViewParada.PageIndex = e.NewPageIndex;

                Empresa empresa = (Empresa)Session["EmpresaLogada"];

                if (empresa != null)
                {
                    ErrorMessage.Text = "";
                    Linha l = Fachada.Instance.LinhaAtual;

                    if (l != null)
                    {

                        if (l.LinhaParadas.Count == 0)
                        {
                            IList<Parada> paradas = null;
                            GridViewParada.DataSource = paradas;
                            GridViewParada.DataBind();
                        }
                        else
                        {
                            IList<Parada> paradas = new List<Parada>();

                            foreach (LinhaParada linhaParada in l.LinhaParadas.ToList())
                            {
                                paradas.Add(linhaParada.Parada);
                            }

                            GridViewParada.DataSource = paradas;
                            GridViewParada.DataBind();
                        }
                    }
                    else
                    {
                        Response.Write("<script>window.alert('Linha Não Encontrada!');</script>");
                        TextBoxNumeroLinha.Focus();
                    }

                }
                else
                {
                    Response.Redirect("LoginEmpresa.aspx", false);
                }
            }
            catch (Exception ex)
            {
                ErrorMessage.Text = ex.Message;
            }
        }

        protected void GridViewParada_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "excluir")
            {
                try
                {
                    string numeroParada = e.CommandArgument.ToString();

                    Linha l = Fachada.Instance.LinhaAtual;

                    foreach (LinhaParada linhaParada in l.LinhaParadas.ToList())
                    {
                        if (linhaParada.Parada.Numero.Equals(numeroParada))
                        {
                            l.LinhaParadas.Remove(linhaParada);
                            Fachada.Instance.Salvar(l);
                            break;
                        }
                    }

                    IList<Parada> paradas = new List<Parada>();

                    foreach (LinhaParada linhaParada in l.LinhaParadas.ToList())
                    {
                        paradas.Add(linhaParada.Parada);
                    }


                    GridViewParada.DataSource = paradas;
                    GridViewParada.DataBind();

                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Excluir", "alert('Excluido com sucesso!');", true);

                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
        }

        protected void GridViewParada_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string numero = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "numero"));

                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).CommandArgument = numero;

                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).Attributes.Add("onClick",
                       " return confirm('Confirma o cancelamento da parada nº " + numero + "?');");
            }
        }

        protected void GridViewParada_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            e.Cancel = true;
        }

        protected void GridViewParada_RowEditing(object sender, GridViewEditEventArgs e)
        {

        }

        protected void GridViewParada_RowUpdated(object sender, GridViewUpdatedEventArgs e)
        {

        }

        protected void GridViewParada_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {

        }
    }
}